{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "0b1157d2-29c8-4ccd-8f23-2149233af157",
   "metadata": {},
   "source": [
    "Chapter 06\n",
    "# 线性回归\n",
    "Book_1《编程不难》 | 鸢尾花书：从加减乘除到机器学习 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "474fd624-595a-425c-8a43-58ef8c9ed9c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入包\n",
    "import random\n",
    "import statistics\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7c28cf98-f05c-4537-9b3b-5dc4e53ba88b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 产生数据\n",
    "num = 50\n",
    "random.seed(0)\n",
    "x_data = [random.uniform(0, 10) for _ in range(num)]\n",
    "# 噪音\n",
    "noise =  [random.gauss(0,1) for _ in range(num)]\n",
    "y_data = [0.5 * x_data[idx] + 1 + noise[idx]\n",
    "          for idx in range(num)]\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "45195a52-bf32-4d38-9722-9447f4e22630",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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6hpt5E6828eYADxy5Iiam5s1YMCANs8HDBig2traqN9TVlamRYsWtXu+adMmZWZmJqTOVFJRUeF1CUagndyhnbpGG3Wuqakprj/PmACMCATablNwHKfds4jHHntM8+fPb/28sbFRgwYN0qRJk5SXx+rPjoTDYVVUVGjKlClKT0/3uhzfop3coZ26Rhu5U19fH9efZ0wA9uvXT2lpae16e3V1de16hRHBYFDBYLDd8/T0dP7IXKCd3KGd3KGdukYbdS7ebWPMIpjevXtrzJgx7YYIKioqdN1113lUFQDAVMb0ACVp/vz5uu+++1RcXKxrr71WK1eu1MGDB/XQQw95XRoAwDBGBeBdd92l+vp6LV68WDU1NSoqKtKbb76pIUOGeF0aAMAwRgWgJM2ePVuzZ8/2ugwAgOGMmQMEACCeCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlYwIwL/85S968MEHVVhYqD59+ujSSy9VaWmpTp065XVpAABDned1AW786U9/UktLi1544QVddtll2r17t370ox/pxIkT+uUvf+l1eQAAAxkRgNOmTdO0adNaPx86dKj27t2r8vJyAhAA0C1GBGA0DQ0Nys3N7fQ1oVBIoVCozfdI0tGjRxNam+nC4bCamppUX1+v9PR0r8vxLdrJHdqpa7SRO5H3bsdx4vMDHQN99tlnTnZ2tvPiiy92+rrS0lJHEh988MEHHyn08fnnn8clSwKOE68ojd3ChQu1aNGiTl+zbds2FRcXt37+5ZdfasKECZowYYL+9V//tdPvPbcH+PXXX2vIkCE6ePCgcnJyelZ8CmtsbNSgQYN06NAhZWdne12Ob9FO7tBOXaON3GloaNDgwYN17NgxXXjhhT3+eZ4OgT788MP63ve+1+lrLrnkktb//eWXX2rSpEm69tprtXLlyi5/fjAYVDAYbPc8JyeHPzIXsrOzaScXaCd3aKeu0Ubu9OoVnw0MngZgv3791K9fP1evPXz4sCZNmqQxY8Zo1apVcWsAAICdjFgE8+WXX2rixIkaPHiwfvnLX+qvf/1r69fy8/M9rAwAYCojAnDjxo367LPP9Nlnn+niiy9u87VYpjCDwaBKS0ujDoviW7STO7STO7RT12gjd+LdTp4uggEAwCtMpAEArEQAAgCsRAACAKxEAAIArGRNAD7//PMqLCxURkaGxowZo/fee8/rknylrKxMY8eOVVZWlvr376877rhDe/fu9bos3ysrK1MgEFBJSYnXpfjO4cOHNXPmTOXl5SkzM1OjRo1SVVWV12X5yunTp/Xzn/+89aq3oUOHavHixWppafG6NE9t2bJFM2bM0MCBAxUIBPS73/2uzdcdx9HChQs1cOBA9enTRxMnTtQnn3wS8++xIgDXrl2rkpISPf7449qxY4duuOEG3XLLLTp48KDXpfnG5s2bNWfOHH344YeqqKjQ6dOnNXXqVJ04ccLr0nxr27ZtWrlypa666iqvS/GdY8eO6frrr1d6erreeust7dmzR7/61a/icnxVKnnqqae0YsUKLV++XJ9++qmefvppPfPMM3ruuee8Ls1TJ06c0NVXX63ly5dH/frTTz+tpUuXavny5dq2bZvy8/M1ZcoUHT9+PLZfFJcTRX1u3LhxzkMPPdTm2fDhw50FCxZ4VJH/1dXVOZKczZs3e12KLx0/ftwZNmyYU1FR4UyYMMGZO3eu1yX5yk9/+lNn/PjxXpfhe9OnT3ceeOCBNs++853vODNnzvSoIv+R5Lz66qutn7e0tDj5+fnOk08+2frs5MmTTk5OjrNixYqYfnbK9wBPnTqlqqoqTZ06tc3zqVOn6v333/eoKv+LXB3V1ZVTtpozZ46mT5+uyZMne12KL61fv17FxcW688471b9/f11zzTV68cUXvS7Ld8aPH68//OEP2rdvnyRp586d2rp1q2699VaPK/Ov/fv3q7a2ts17ejAY1IQJE2J+TzfiJJieOHLkiJqbmzVgwIA2zwcMGKDa2lqPqvI3x3E0f/58jR8/XkVFRV6X4zuvvPKKtm/frm3btnldim998cUXKi8v1/z58/Wzn/1MlZWV+slPfqJgMKjvf//7XpfnGz/96U/V0NCg4cOHKy0tTc3NzXriiSd09913e12ab0Xet6O9px84cCCmn5XyARgRCATafO44TrtnOOPhhx/Wxx9/rK1bt3pdiu8cOnRIc+fO1caNG5WRkeF1Ob7V0tKi4uJiLVmyRJJ0zTXX6JNPPlF5eTkBeJa1a9dq9erVWrNmjUaOHKnq6mqVlJRo4MCBuv/++70uz9fi8Z6e8gHYr18/paWltevt1dXVtfsXBKRHHnlE69ev15YtW9qduwqpqqpKdXV1GjNmTOuz5uZmbdmyRcuXL1coFFJaWpqHFfpDQUGBRowY0ebZFVdcoXXr1nlUkT89+uijWrBgQeu1cFdeeaUOHDigsrIyArADkQsQamtrVVBQ0Pq8O+/pKT8H2Lt3b40ZM0YVFRVtnldUVOi6667zqCr/cRxHDz/8sH7729/qnXfeUWFhodcl+dJNN92kXbt2qbq6uvWjuLhY9957r6qrqwm//3H99de320azb98+DRkyxKOK/Kmpqand1W5paWnWb4PoTGFhofLz89u8p586dUqbN2+O+T095XuAkjR//nzdd999Ki4ubr1M9+DBg3rooYe8Ls035syZozVr1ui1115TVlZWa485JydHffr08bg6/8jKymo3L3r++ecrLy+P+dKzzJs3T9ddd52WLFmi7373u6qsrNTKlStdXWRtkxkzZuiJJ57Q4MGDNXLkSO3YsUNLly7VAw884HVpnvrmm2/02WeftX6+f/9+VVdXKzc3V4MHD1ZJSYmWLFmiYcOGadiwYVqyZIkyMzN1zz33xPaL4rFM1QS//vWvnSFDhji9e/d2Ro8ezfL+c0iK+rFq1SqvS/M9tkFE9/rrrztFRUVOMBh0hg8f7qxcudLrknynsbHRmTt3rjN48GAnIyPDGTp0qPP44487oVDI69I8tWnTpqjvR/fff7/jOGe2QpSWljr5+flOMBh0brzxRmfXrl0x/x6uQwIAWCnl5wABAIiGAAQAWIkABABYiQAEAFiJAAQAWIkABABYiQAEAFiJAAQAWIkABABYiQAEAFiJAAQM99e//lX5+fmtd+9J0h//+Ef17t1bGzdu9LAywN84CxRIAW+++abuuOMOvf/++xo+fLiuueYaTZ8+XcuWLfO6NMC3CEAgRcyZM0dvv/22xo4dq507d2rbtm3cWg90ggAEUsTf/vY3FRUV6dChQ/roo4901VVXeV0S4GvMAQIp4osvvtCXX36plpYWHThwwOtyAN+jBwikgFOnTmncuHEaNWqUhg8frqVLl2rXrl0aMGCA16UBvkUAAing0Ucf1X/+539q586duuCCCzRp0iRlZWXpv/7rv7wuDfAthkABw7377rtatmyZXn75ZWVnZ6tXr156+eWXtXXrVpWXl3tdHuBb9AABAFaiBwgAsBIBCACwEgEIALASAQgAsBIBCACwEgEIALASAQgAsBIBCACwEgEIALASAQgAsBIBCACwEgEIALDS/welQvHM0VuhLAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "         \n",
    "# 绘制散点图\n",
    "fig, ax = plt.subplots()\n",
    "ax.scatter(x_data, y_data)\n",
    "ax.set_xlabel('x'); ax.set_ylabel('y')\n",
    "ax.set_aspect('equal', adjustable='box')\n",
    "ax.set_xlim(0,10); ax.set_ylim(-2,8)\n",
    "ax.grid()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "fce3aa32-4f51-4109-a04f-7b81ff4549e2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 一元线性回归\n",
    "slope, intercept = statistics.linear_regression(x_data, y_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "cf6c49d9-9eca-4c0e-8e70-116b61ac214d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成一个等差数列\n",
    "start, end, step = 0, 10, 0.5\n",
    "x_array = []\n",
    "x_i = start\n",
    "\n",
    "while x_i <= end:\n",
    "    x_array.append(x_i)\n",
    "    x_i += step\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6026ed9e-abb2-4026-bf9b-1179a04a20b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算x_array预测值\n",
    "y_array_predicted = [slope * x_i + intercept for x_i in x_array]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6116c35c-5ddf-40ce-b219-0805d4b0dd6f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化一元线性回归直线\n",
    "fig, ax = plt.subplots()\n",
    "ax.scatter(x_data, y_data)\n",
    "ax.plot(x_array, y_array_predicted, color = 'r')\n",
    "ax.set_xlabel('x'); ax.set_ylabel('y')\n",
    "ax.set_aspect('equal', adjustable='box')\n",
    "ax.set_xlim(0,10); ax.set_ylim(-2,8)\n",
    "ax.grid()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
